1 libraries & functions

2 working directory

# system_dir = "/Users/jiangyanyu/sciebo/"
# system_dir = "/home/yu.j/sciebo/"
system_dir = "/home/jyu/rstudio/"
working_dir = paste0(system_dir,"/Projects/Katzmarski_mouse_macro_ownerJY/")
published_data_dir = paste0(system_dir,"/general_scripts/publised_datasets/")
global_ref_dir =paste0(system_dir,"/general_scripts/Global_ref_data/")
gsea_pathway_dir = paste0(system_dir,"/general_scripts/Global_ref_data/")

source(paste0(global_ref_dir,"general_functions.R"))
## Loading required package: AnnotationDbi
## 
## Attaching package: 'AnnotationDbi'
## The following object is masked from 'package:dplyr':
## 
##     select
## 
## 
## 
## Registered S3 method overwritten by 'ggtree':
##   method      from 
##   identify.gg ggfun
## clusterProfiler v4.2.2  For help: https://yulab-smu.top/biomedical-knowledge-mining-book/
## 
## If you use clusterProfiler in published research, please cite:
## T Wu, E Hu, S Xu, M Chen, P Guo, Z Dai, T Feng, L Zhou, W Tang, L Zhan, X Fu, S Liu, X Bo, and G Yu. clusterProfiler 4.0: A universal enrichment tool for interpreting omics data. The Innovation. 2021, 2(3):100141
## 
## Attaching package: 'clusterProfiler'
## The following object is masked from 'package:AnnotationDbi':
## 
##     select
## The following object is masked from 'package:biomaRt':
## 
##     select
## The following object is masked from 'package:IRanges':
## 
##     slice
## The following object is masked from 'package:S4Vectors':
## 
##     rename
## The following object is masked from 'package:stats':
## 
##     filter
## DOSE v3.20.1  For help: https://yulab-smu.top/biomedical-knowledge-mining-book/
## 
## If you use DOSE in published research, please cite:
## Guangchuang Yu, Li-Gen Wang, Guang-Rong Yan, Qing-Yu He. DOSE: an R/Bioconductor package for Disease Ontology Semantic and Enrichment analysis. Bioinformatics 2015, 31(4):608-609

3 process scRNA data

3.1 load saved rdata

following filtering criteria was applied in the file: Schlitzer_seuratObject_firstExperiment_2020-02-07.RData subset = nFeature_RNA > 500 & nFeature_RNA < 3000 & percent.mt < 10 & percent.Hb < 0.0001

# load(paste(working_dir,"Schlitzer_seuratObject_firstExperiment_2020-02-07.RData",sep=""))
# 
# run01_counts = seurat@assays$RNA@counts
# jonas_run01_metadata = seurat@meta.data
# 
# run01_seurat = CreateSeuratObject(run01_counts, min.cells = 3, project = "Katzmarski_seurat_run01_allcells", meta.data = seurat@meta.data[,c("sample","status")])
# rm(run01_counts,seurat)
# 
# run01_seurat[["percent.mt"]] <- PercentageFeatureSet(run01_seurat, pattern = "^mt-")
# FeatureScatter(run01_seurat,feature1 = "nCount_RNA", feature2 = "nFeature_RNA")
# VlnPlot(run01_seurat,features = c("nCount_RNA","nFeature_RNA","percent.mt"))

3.2 re-run seurat

# run01_seurat = run01_seurat %>% NormalizeData(., normalization.method = "LogNormalize", scale.factor = 10000) %>% FindVariableFeatures(., selection.method = "vst", nfeatures = 2000) %>% ScaleData(., features = rownames(.)) %>% RunPCA(.,features = VariableFeatures(.), verbose = FALSE) %>% JackStraw(., num.replicate = 100) %>% ScoreJackStraw(., dims = 1:20)
# 
# JackStrawPlot(run01_seurat, dims = 1:20)
# ElbowPlot(run01_seurat)
# 
# run01_seurat = FindNeighbors(run01_seurat, dims = 1:10)
# 
# # set resolution as 0.25 to generate 6 clusters, as same as the output from time series experiment
# run01_seurat = run01_seurat %>% FindClusters(., resolution = 0.25) %>% RunUMAP(., dims=1:10)
# 
# 
# #UMAP
# run01_seurat <- RunUMAP(run01_seurat,
#                      dims = 1:30,
#                      n.neighbors = 30,
#                      min.dist = 1,
#                      n.components = 3,
#                      spread = 3,
#                      a=1,
#                      b=0.8)

3.3 save/load reanalyzed file

# saveRDS(run01_seurat,paste(working_dir,"JYu_Run01_reanalysis_20220517.rds"))

run01_seurat = readRDS(paste(working_dir,"JYu_Run01_reanalysis_20220517.rds"))

4 generate figures

##1.Combined UMAP of D7 PBS vs. Glucan

ms_folder = "/home/yu.j/sciebo/Projects/Katzmarski_mouse_macro_ownerJY/ms_figures_reanalysis20220517/"

cluster_color = c("#3A3A3C","#A9DDD9","#0E7D63","#A35884","#EEBA4C")


# pdf(file = paste0(ms_folder,"1.day7_merged_umap.pdf"),width = 5, height = 4,colormodel="cmyk")
DimPlot(run01_seurat,dims = c(1,2),pt.size=0.3)+
  scale_color_manual(values = cluster_color)+
  theme_classic()+
  labs(subtitle = "Run01_day7_PBSandGLUCAN (10202 cells)")

# dev.off()

rm(ms_folder,cluster_color)

##2.UMAP of D7 PBS

ms_folder = "/home/yu.j/sciebo/Projects/Katzmarski_mouse_macro_ownerJY/ms_figures_reanalysis20220517/"

cluster_color = c("#3A3A3C","#A9DDD9","#0E7D63","#A35884","#EEBA4C")


# pdf(file = paste0(ms_folder,"2.day7_pbs_umap.pdf"),width = 5, height = 4,colormodel="cmyk")
DimPlot(subset(run01_seurat,subset=status=="Solvent"),dims = c(1,2),pt.size=0.3)+
  scale_color_manual(values = cluster_color)+
  theme_classic()+
  labs(subtitle = "Run01_day7_PBS (4845 cells)")

# dev.off()

rm(ms_folder,cluster_color)

##3.UMAP of D7 PBS

ms_folder = "/home/yu.j/sciebo/Projects/Katzmarski_mouse_macro_ownerJY/ms_figures_reanalysis20220517/"

cluster_color = c("#3A3A3C","#A9DDD9","#0E7D63","#A35884","#EEBA4C")


# pdf(file = paste0(ms_folder,"3.day7_glucan_umap.pdf"),width = 5, height = 4,colormodel="cmyk")
DimPlot(subset(run01_seurat,subset=status=="Glucan"),dims = c(1,2),pt.size=0.3)+
  scale_color_manual(values = cluster_color)+
  theme_classic()+
  labs(subtitle = "Run01_day7_GLUCAN (5357 cells)")

# dev.off()

rm(ms_folder,cluster_color)

##4.barplot by cluster

ns <- table(organ = run01_seurat$status, cell_type = run01_seurat$seurat_clusters)
## remove cluster 1, 5, 6
# ns = ns[,c(1,3,4,5,8)]
fq <- prop.table(ns, 1) * 100
df <- as.data.frame(fq)

ms_folder = "/home/yu.j/sciebo/Projects/Katzmarski_mouse_macro_ownerJY/ms_figures_reanalysis20220517/"
cluster_color = c("#3A3A3C","#A9DDD9","#0E7D63","#A35884","#EEBA4C")

df$organ = factor(df$organ,levels = c("Glucan","Solvent"))
library(ggplot2)

# pdf(file = paste0(ms_folder,"4.barplot_by_cluster.pdf"),width = 5, height = 2,colormodel="cmyk")


ggplot(df,aes(x=Freq,y=organ,fill=cell_type,label=cell_type))+
  geom_bar(stat="identity",colour="black")+
  scale_fill_manual(values=cluster_color)+
  theme_classic()+
  # geom_text(position = position_stack(vjust = 0.5))+
  theme(axis.title=element_blank())

# dev.off()
rm(ns,fq,df,cluster_color,ms_folder)

##5.barplot by cluster

ns <- table(organ = run01_seurat$seurat_clusters, cell_type = run01_seurat$status)
## remove cluster 1, 5, 6
# ns = ns[,c(1,3,4,5,8)]
fq <- prop.table(ns, 1) * 100
df <- as.data.frame(fq)

ms_folder = "/home/yu.j/sciebo/Projects/Katzmarski_mouse_macro_ownerJY/ms_figures_reanalysis20220517/"
cluster_color = c("white","#A35884")

# df$organ = factor(df$organ,levels = c("Glucan","Solvent"))
library(ggplot2)

# pdf(file = paste0(ms_folder,"5.barplot_by_condition.pdf"),width = 5, height = 2,colormodel="cmyk")


ggplot(df,aes(x=Freq,y=organ,fill=cell_type,label=cell_type))+
  geom_bar(stat="identity",colour="black")+
  scale_fill_manual(values=cluster_color)+
  theme_classic()+
  # geom_text(position = position_stack(vjust = 0.5))+
  theme(axis.title=element_blank())

# dev.off()
rm(ns,fq,df,cluster_color,ms_folder)

##5.1 APOE violin

ms_folder = "/home/yu.j/sciebo/Projects/Katzmarski_mouse_macro_ownerJY/ms_figures_reanalysis20220517/"
# pdf(file = paste0(ms_folder,"5.1.ApoeViolin.pdf"),width = 4, height = 4,colormodel="cmyk")
cluster_color = c("#3A3A3C","#A9DDD9","#0E7D63","#A35884","#EEBA4C")
VlnPlot(run01_seurat,features = c("Apoe"),group.by = "seurat_clusters")+scale_fill_manual(values = cluster_color)

# dev.off()
rm(cluster_color,ms_folder)

##6.DEG Heatmap D7

ms_folder = "/home/yu.j/sciebo/Projects/Katzmarski_mouse_macro_ownerJY/ms_figures_reanalysis20220517/"
cluster_color = c("#3A3A3C","#A9DDD9","#0E7D63","#A35884","#EEBA4C")
# pdf(file = paste0(ms_folder,"6.DEG_heatmap_run01.pdf"),width = 6,height = 8)
run01_seurat_deg = FindAllMarkers(run01_seurat,only.pos = FALSE, min.pct = 0.25, logfc.threshold = 0.25)
## Calculating cluster 0
## Calculating cluster 1
## Calculating cluster 2
## Calculating cluster 3
## Calculating cluster 4
DoHeatmap(run01_seurat, 
          features = run01_seurat_deg %>% group_by(cluster) %>% top_n(n = 10, wt = avg_log2FC) %>% .$gene,
          group.colors = cluster_color)+
   scale_fill_gradientn(colors = c("blue", "white", "red"))
## Scale for 'fill' is already present. Adding another scale for 'fill', which
## will replace the existing scale.

# dev.off()

##7.UMAP Glucan D0, 7, 21

# ms_folder = "/home/yu.j/sciebo/Projects/Katzmarski_mouse_macro_ownerJY/ms_figures_reanalysis20220517/"
# 
# cluster_color = c("#3A3A3C","#A9DDD9","#0E7D63","#A35884","#EEBA4C","white")
# cell_selected = run02_seurat@meta.data[unlist(tapply(1:nrow(run02_seurat@meta.data),run02_seurat@meta.data$combined_condition,function(x) sample(x,978))),]
# cell_selected = subset(cell_selected,combined_condition!="BAL_Glucan_d14")
# 
# # pdf(file = paste0(ms_folder,"7.UMAP_D0_D7_D21_run02.pdf"),width = 12, height = 4,colormodel="cmyk")
# DimPlot(run02_seurat[,rownames(cell_selected)],dims = c(2,3),pt.size=0.3,split.by = "combined_condition")+
#   scale_color_manual(values = cluster_color)+
#   theme_classic()+
#   labs(subtitle = "Run02_glucan (978 cells per condition)")
# # dev.off()
# 
# rm(ms_folder,cluster_color)

##8.barplot of gene expressions

SiglecF, ITGAX,, Fapb4, Ear2, Prdx1, Top2a, Mki67, Gpnmb, TREM2, ApoE, ifit2, ifit3, Gbp2

tmp_genes = c("Siglecf", "Itgax", "Fabp4", "Ear2", "Prdx1", "Top2a", "Mki67", "Gpnmb", "Trem2", "Apoe", "Ifit2", "Ifit3", "Gbp2")
cluster_color = c("#3A3A3C","#A9DDD9","#0E7D63","#A35884","#EEBA4C","white")
ms_folder = "/home/yu.j/sciebo/Projects/Katzmarski_mouse_macro_ownerJY/ms_figures_reanalysis20220517/"

# pdf(file = paste0(ms_folder,"8.barplot_of_selected_genes.pdf"),width = 6, height = 2,colormodel="cmyk")
# 
# for(i in c(1:length(tmp_genes))){
#   tmp_data = cbind(run01_seurat@assays$RNA@data[tmp_genes[i],],run01_seurat@meta.data)
#   colnames(tmp_data)[1] = tmp_genes[i]
#   tmp_data = tmp_data[order(tmp_data$seurat_clusters),]
#   
#   p = ggplot(tmp_data,aes(x=c(1:nrow(tmp_data)),y=get(tmp_genes[i]),fill=seurat_clusters))+
#     geom_col(width = 1)+
#     scale_fill_manual(values  = cluster_color)+
#     theme_classic()+
#     theme(axis.title.x=element_blank(),axis.text.x = element_blank(),axis.ticks.x = element_blank())+
#     labs(title = tmp_genes[i],y="Normazlied UMI counts")
#     
#   print(p)
# }
# 
# dev.off()

## save one figure per file

for(i in c(1:length(tmp_genes))){
  # pdf(file = paste0(ms_folder,"8.barplot_of_",tmp_genes[i], ".pdf"),width = 6, height = 2,colormodel="cmyk")
  tmp_data = cbind(run01_seurat@assays$RNA@data[tmp_genes[i],],run01_seurat@meta.data)
  colnames(tmp_data)[1] = tmp_genes[i]
  tmp_data = tmp_data[order(tmp_data$seurat_clusters),]
  
  p = ggplot(tmp_data,aes(x=c(1:nrow(tmp_data)),y=get(tmp_genes[i]),fill=seurat_clusters))+
    geom_col(width = 1)+
    scale_fill_manual(values  = cluster_color)+
    theme_classic()+
    theme(axis.title.x=element_blank(),axis.text.x = element_blank(),axis.ticks.x = element_blank())+
    labs(title = tmp_genes[i],y="Normazlied UMI counts")
    
  print(p)
  # dev.off()
}

rm(p,tmp_genes, cluster_color, ms_folder, tmp_data,i)

##8.1.violin of gene expressions

SiglecF, ITGAX,, Fapb4, Ear2, Prdx1, Top2a, Mki67, Gpnmb, TREM2, ApoE, ifit2, ifit3, Gbp2

tmp_genes = c("Siglecf", "Itgax", "Fabp4", "Top2a", "Mki67", "Gpnmb", "Apoe", "Ifit2", "Gbp2")
cluster_color = c("#3A3A3C","#A9DDD9","#0E7D63","#A35884","#EEBA4C","white")
ms_folder = "/home/yu.j/sciebo/Projects/Katzmarski_mouse_macro_ownerJY/ms_figures_reanalysis20220517/"

# pdf(file = paste0(ms_folder,"8.1.vlnplot_of_selected_genes.pdf"),width = 4, height = 4,colormodel="cmyk")

for(i in c(1:length(tmp_genes))){

  p = VlnPlot(run01_seurat,features = tmp_genes[i],group.by = "seurat_clusters")+scale_fill_manual(values = cluster_color)


  print(p)
}

# dev.off()




rm(p,tmp_genes, cluster_color, ms_folder, tmp_data,i)
## Warning in rm(p, tmp_genes, cluster_color, ms_folder, tmp_data, i): object
## 'tmp_data' not found

##10.run02_UMAP

# ms_folder = "/home/yu.j/sciebo/Projects/Katzmarski_mouse_macro_ownerJY/ms_figures_reanalysis20220517/"
# 
# cluster_color = c("#3A3A3C","#A9DDD9","#0E7D63","#A35884","#EEBA4C")
# 
# 
# # pdf(file = paste0(ms_folder,"10.run02_merged_umap.pdf"),width = 5, height = 4,colormodel="cmyk")
# tmp_seurat= subset(run02_seurat,subset=seurat_clusters!=5) %>% subset(.,subset=combined_condition!="BAL_Glucan_d14")
# 
# DimPlot(tmp_seurat,dims = c(2,3),pt.size=0.3)+
#   scale_color_manual(values = cluster_color)+
#   theme_classic()+
#   labs(subtitle = "Run02_BAL_glucan_D0-D7-D21 (3069 cells)")
# # dev.off()
# 
# rm(ms_folder,cluster_color, tmp_seurat)

##11.DEG Heatmap run02

# ms_folder = "/home/yu.j/sciebo/Projects/Katzmarski_mouse_macro_ownerJY/ms_figures_reanalysis20220517/"
# cluster_color = c("#3A3A3C","#A9DDD9","#0E7D63","#A35884","#EEBA4C")
# # pdf(file = paste0(ms_folder,"11.DEG_heatmap_run02.pdf"),width = 6,height = 8)
# tmp_seurat= subset(run02_seurat,subset=seurat_clusters!=5) %>% subset(.,subset=combined_condition!="BAL_Glucan_d14")
# 
# 
# DoHeatmap(tmp_seurat, 
#           features = run02_seurat_deg %>% subset(.,cluster!=5) %>% group_by(cluster) %>% top_n(n = 10, wt = avg_log2FC) %>% .$gene,
#           group.colors = cluster_color)+
#    scale_fill_gradientn(colors = c("blue", "white", "red"))
# # dev.off()
# 
# rm(ms_folder,cluster_color, tmp_seurat)

##12.QC plots

ms_folder = "/home/yu.j/sciebo/Projects/Katzmarski_mouse_macro_ownerJY/ms_figures_reanalysis20220517/"
cluster_color = c("#3A3A3C","#A9DDD9","#0E7D63","#A35884","#EEBA4C")
# pdf(file = paste0(ms_folder,"12.1.QC_for_run01.pdf"),width = 12,height = 4)

VlnPlot(run01_seurat,features = c("nCount_RNA","nFeature_RNA","percent.mt"),group.by = "seurat_clusters")+scale_fill_manual(values = cluster_color)

# dev.off()

5 session information

sessionInfo()
## R version 4.1.3 (2022-03-10)
## Platform: x86_64-pc-linux-gnu (64-bit)
## Running under: Ubuntu 20.04.4 LTS
## 
## Matrix products: default
## BLAS/LAPACK: /usr/lib/x86_64-linux-gnu/openblas-pthread/libopenblasp-r0.3.8.so
## 
## locale:
## [1] C
## 
## attached base packages:
##  [1] grid      splines   stats4    stats     graphics  grDevices utils    
##  [8] datasets  methods   base     
## 
## other attached packages:
##  [1] DOSE_3.20.1                 clusterProfiler_4.2.2      
##  [3] org.Mm.eg.db_3.14.0         org.Hs.eg.db_3.14.0        
##  [5] AnnotationDbi_1.56.2        biomaRt_2.50.3             
##  [7] AUCell_1.16.0               ComplexHeatmap_2.10.0      
##  [9] edgeR_3.36.0                limma_3.50.3               
## [11] monocle_2.22.0              DDRTree_0.1.5              
## [13] irlba_2.3.5                 VGAM_1.1-6                 
## [15] Matrix_1.4-1                monocle3_1.2.9             
## [17] SingleCellExperiment_1.16.0 SummarizedExperiment_1.24.0
## [19] GenomicRanges_1.46.1        GenomeInfoDb_1.30.1        
## [21] IRanges_2.28.0              S4Vectors_0.32.4           
## [23] MatrixGenerics_1.6.0        matrixStats_0.62.0         
## [25] Biobase_2.54.0              BiocGenerics_0.40.0        
## [27] ggpubr_0.4.0                tidyr_1.2.0                
## [29] magrittr_2.0.3              dplyr_1.0.9                
## [31] sp_1.5-0                    SeuratObject_4.1.0         
## [33] Seurat_4.1.1                ggplot2_3.3.6              
## 
## loaded via a namespace (and not attached):
##   [1] rappdirs_0.3.3         scattermore_0.8        R.methodsS3_1.8.2     
##   [4] bit64_4.0.5            knitr_1.39             DelayedArray_0.20.0   
##   [7] R.utils_2.11.0         data.table_1.14.2      rpart_4.1.16          
##  [10] KEGGREST_1.34.0        RCurl_1.98-1.7         doParallel_1.0.17     
##  [13] generics_0.1.2         terra_1.5-34           cowplot_1.1.1         
##  [16] RSQLite_2.2.14         shadowtext_0.1.2       RANN_2.6.1            
##  [19] combinat_0.0-8         future_1.26.1          enrichplot_1.14.2     
##  [22] bit_4.0.4              spatstat.data_2.2-0    xml2_1.3.3            
##  [25] httpuv_1.6.5           assertthat_0.2.1       viridis_0.6.2         
##  [28] xfun_0.31              hms_1.1.1              jquerylib_0.1.4       
##  [31] evaluate_0.15          promises_1.2.0.1       fansi_1.0.3           
##  [34] progress_1.2.2         dbplyr_2.2.0           igraph_1.3.2          
##  [37] DBI_1.1.3              htmlwidgets_1.5.4      sparsesvd_0.2         
##  [40] spatstat.geom_2.4-0    purrr_0.3.4            ellipsis_0.3.2        
##  [43] backports_1.4.1        annotate_1.72.0        deldir_1.0-6          
##  [46] vctrs_0.4.1            ROCR_1.0-11            abind_1.4-5           
##  [49] cachem_1.0.6           withr_2.5.0            ggforce_0.3.3         
##  [52] progressr_0.10.1       sctransform_0.3.3      treeio_1.18.1         
##  [55] prettyunits_1.1.1      goftest_1.2-3          cluster_2.1.2         
##  [58] ape_5.6-2              lazyeval_0.2.2         crayon_1.5.1          
##  [61] labeling_0.4.2         pkgconfig_2.0.3        slam_0.1-50           
##  [64] tweenr_1.0.2           vipor_0.4.5            nlme_3.1-158          
##  [67] rlang_1.0.2            globals_0.15.1         lifecycle_1.0.1       
##  [70] miniUI_0.1.1.1         downloader_0.4         filelock_1.0.2        
##  [73] BiocFileCache_2.2.1    ggrastr_1.0.1          polyclip_1.10-0       
##  [76] lmtest_0.9-40          graph_1.72.0           aplot_0.1.6           
##  [79] carData_3.0-5          boot_1.3-28            zoo_1.8-10            
##  [82] beeswarm_0.4.0         ggridges_0.5.3         GlobalOptions_0.1.2   
##  [85] pheatmap_1.0.12        png_0.1-7              viridisLite_0.4.0     
##  [88] rjson_0.2.21           bitops_1.0-7           R.oo_1.25.0           
##  [91] KernSmooth_2.23-20     Biostrings_2.62.0      blob_1.2.3            
##  [94] shape_1.4.6            qvalue_2.26.0          stringr_1.4.0         
##  [97] parallelly_1.32.0      spatstat.random_2.2-0  gridGraphics_0.5-1    
## [100] rstatix_0.7.0          ggsignif_0.6.3         scales_1.2.0          
## [103] memoise_2.0.1          GSEABase_1.56.0        plyr_1.8.7            
## [106] ica_1.0-2              zlibbioc_1.40.0        scatterpie_0.1.7      
## [109] compiler_4.1.3         HSMMSingleCell_1.14.0  RColorBrewer_1.1-3    
## [112] clue_0.3-61            lme4_1.1-29            fitdistrplus_1.1-8    
## [115] cli_3.3.0              XVector_0.34.0         listenv_0.8.0         
## [118] patchwork_1.1.1        pbapply_1.5-0          MASS_7.3-57           
## [121] mgcv_1.8-39            tidyselect_1.1.2       stringi_1.7.6         
## [124] highr_0.9              densityClust_0.3.2     GOSemSim_2.20.0       
## [127] yaml_2.3.5             locfit_1.5-9.5         ggrepel_0.9.1         
## [130] sass_0.4.1             fastmatch_1.1-3        tools_4.1.3           
## [133] future.apply_1.9.0     parallel_4.1.3         circlize_0.4.15       
## [136] rstudioapi_0.13        foreach_1.5.2          gridExtra_2.3         
## [139] farver_2.1.0           Rtsne_0.16             ggraph_2.0.5          
## [142] digest_0.6.29          BiocManager_1.30.18    rgeos_0.5-9           
## [145] FNN_1.1.3.1            shiny_1.7.1            qlcMatrix_0.9.7       
## [148] Rcpp_1.0.8.3           car_3.1-0              broom_0.8.0           
## [151] later_1.3.0            RcppAnnoy_0.0.19       httr_1.4.3            
## [154] colorspace_2.0-3       XML_3.99-0.10          tensor_1.5            
## [157] reticulate_1.25        yulab.utils_0.0.4      uwot_0.1.11           
## [160] tidytree_0.3.9         spatstat.utils_2.3-1   graphlayouts_0.8.0    
## [163] ggplotify_0.1.0        plotly_4.10.0          xtable_1.8-4          
## [166] ggtree_3.2.1           jsonlite_1.8.0         nloptr_2.0.3          
## [169] tidygraph_1.2.1        ggfun_0.0.6            R6_2.5.1              
## [172] pillar_1.7.0           htmltools_0.5.2        mime_0.12             
## [175] BiocParallel_1.28.3    glue_1.6.2             fastmap_1.1.0         
## [178] minqa_1.2.4            codetools_0.2-18       fgsea_1.20.0          
## [181] utf8_1.2.2             lattice_0.20-45        bslib_0.3.1           
## [184] spatstat.sparse_2.1-1  tibble_3.1.7           ggbeeswarm_0.6.0      
## [187] curl_4.3.2             leiden_0.4.2           GO.db_3.14.0          
## [190] survival_3.3-1         rmarkdown_2.14         docopt_0.7.1          
## [193] fastICA_1.2-3          munsell_0.5.0          DO.db_2.9             
## [196] GetoptLong_1.0.5       GenomeInfoDbData_1.2.7 iterators_1.0.14      
## [199] reshape2_1.4.4         gtable_0.3.0           spatstat.core_2.4-4